home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
MacHack 1996
/
MacHack 1996.toast
/
Hacks
/
Hacks ’90
/
DataStack Filer
/
DataStacks.Def
< prev
next >
Wrap
Text File
|
1995-09-10
|
2KB
|
58 lines
DEFINITION MODULE DataStacks;
(* Copyright: © 1990 by Keith Nemitz, all rights reserved. *)
(* all card names are/(must be) pascal strings. *)
FROM SYSTEM IMPORT ADDRESS;
FROM MacTypes IMPORT OSErr;
CONST (* errors reported from DataStack calls. *)
cardSizeTooBig = 701;
tooManyCards = 702;
indxOutOfRange = 703;
notFound = 704;
TYPE DataStack;
VAR
dataStackErr :OSErr;
PROCEDURE NewDataStack(cSize,initial,grow:CARDINAL):DataStack;
PROCEDURE DisposeDataStack(stack:DataStack);
PROCEDURE LoadDataStack(fRefNum:INTEGER):DataStack;
PROCEDURE DumpDataStack(stack:DataStack; fRefNum:INTEGER):BOOLEAN;
PROCEDURE AddCard(stack:DataStack; data:ADDRESS; name:ARRAY OF CHAR):LONGCARD;
(* returns ID = 0 if unable. 'data' IS Ptr. *)
(* returns ID = 0 if grow was zero in call to NewDataStack. *)
PROCEDURE RemoveCard(stack:DataStack; indx:CARDINAL; id:LONGCARD);
(* by ind if not zero, then id unless name is filled *)
PROCEDURE GetCardIndx(stack:DataStack; id:LONGCARD; name:ARRAY OF CHAR):CARDINAL;
(* by id unless name is filled *)
PROCEDURE GetCardID(stack:DataStack; indx:CARDINAL; name:ARRAY OF CHAR):LONGCARD;
(* by indx unless name is filled *)
PROCEDURE GetCardName(stack:DataStack; indx:CARDINAL; id:LONGCARD; VAR name:ARRAY OF CHAR);
(* by indx if not zero, then id unless name is filled *)
PROCEDURE SetCardName(stack:DataStack; indx,id:CARDINAL; name:ARRAY OF CHAR);
(* by indx if not zero, then id. *)
PROCEDURE CountCards(stack:DataStack):CARDINAL;
PROCEDURE GetCardByIndx(stack:DataStack; indx:CARDINAL):ADDRESS;
PROCEDURE GetCardByID(stack:DataStack; id:LONGCARD):ADDRESS;
PROCEDURE GetCardByName(stack:DataStack; name:ARRAY OF CHAR):ADDRESS;
TYPE DoProc = PROCEDURE(ADDRESS);
(* these routines do not set (or clear) dataStackErr. *)
PROCEDURE ForAllCardsDo(stack:DataStack; do:DoProc);
PROCEDURE InIDOrderDo(stack:DataStack; do:DoProc);
PROCEDURE InNameOrderDo(stack:DataStack; do:DoProc);
END DataStacks.